$(function () {
    // 需求1：初始化文章分类列表
    // 因为后边要用，所以封装函数
    let layer = layui.layer
    initArtCateList();
    // 封装
    function initArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates',
        }).then(res => {
            // console.log(res.data);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            // 成功后渲染
            let arr = [];
            let index = 0;
            res.data.data.forEach(ele => {
                index++;
                arr.push(`
                    <tr>
                        <td>${index}</td>
                        <td>${ele.name}</td>
                        <td>${ele.alias}</td>
                        <td> 
                    <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs">编辑</button>
                <button data-id="${ele.Id}"
                  class="btn-delete layui-btn layui-btn-xs layui-btn-danger"
                >
                  删除
                </button>
              </td>
            </tr>
               `)
            });
            // 循环完毕后赋值
            $("tbody").empty().html(arr.join(""))
        })
    }

    // 需求2: 点击添加,显示对话框
    let indexAdd = null;
    $("#btnAdd").on('click', function () {
        // 给出弹框
        indexAdd = layer.open({
            type: 1,
            title: '添加文章分类',
            area: ['500px', '300px'],
            content: `    
            <form class="layui-form" id="formAdd">
                 <div class="layui-form-item">
                <label class="layui-form-label">分类名称</label>
                <div class="layui-input-block">
                 <input type="text" name="name" required  lay-verify="required" placeholder="请输入分类名称" autocomplete="off" class="layui-input">
             </div>
           </div>

           <div class="layui-form-item">
           <label class="layui-form-label">分类别名</label>
           <div class="layui-input-block">
            <input type="text" name="alias" required  lay-verify="required" placeholder="请输入分类别名" autocomplete="off" class="layui-input">
        </div>
      </div>

                 <div class="layui-form-item">
                    <div class="layui-input-block">
                    <button class="layui-btn layui-btn ">确认添加</button>
                   <button
                       class="layui-btn layui-btn  layui-btn-danger"
                     >
                      重置
                     </button>
               </div>
              </div>
              </form>
               `
        });
    })

    // 需求3: 添加文章类别  - 事件委托
    $("body").on('submit', "#formAdd", function (e) {
        e.preventDefault();
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(res => {
            // console.log(res.data);
            // TODO: 判断,关闭对话框,清空表单,刷新页面
            if (res.data.status != 0) {
                return layer.msg(res.data.message);
            }
            // 成功提示
            layer.msg("恭喜您,添加文章类别成功!")
            // 关闭对话框
            layer.close(indexAdd);
            // 刷新页面
            initArtCateList();
        })

    });

    // 需求4: 点击按钮,展示对话框 - 事件委托
    let indexEdit = null
    let form = layui.form
    $('tbody').on('click', '.btn-edit', function () {
        // 给出弹窗
        indexEdit = layer.open({
            type: 1,
            title: '修改文章分类',
            area: ['500px', '250px'],
            content: `
               <form lay-filter="formEdit" class="layui-form" id="formEdit">
                   <!-- 0.方便提交修改设置的隐藏域 Id -->
                   <input type="hidden" name="Id">
                   <div class="layui-form-item">
                       <label class="layui-form-label">分类名称</label>
                       <div class="layui-input-block">
                           <input type="text" name="name" required  lay-verify="required" placeholder="请输入分类名称" autocomplete="off" class="layui-input">
                       </div>
                   </div>
                   <div class="layui-form-item">
                       <label class="layui-form-label">分类别名</label>
                       <div class="layui-input-block">
                           <input type="text" name="alias" required  lay-verify="required" placeholder="请输入分类别名" autocomplete="off" class="layui-input">
                       </div>
                   </div>
                   <div class="layui-form-item">
                       <div class="layui-input-block">
                           <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                           <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                       </div>
                   </div>
               </form>
           `
        });
        // 需求 : 展示当前的文章分类信息
        let id = $(this).attr('data-id')
        axios({
            method: 'GET',
            // 此处的 :id 为动态参数,可以改变的
            //  : 必须省略, : 前面的 / 必须不能省略
            url: '/my/article/cates/' + id,
        }).then((res) => {
            console.log(res.data);
            // 展示数据
            if (res.data.status !== 0) {
                return layer.msg(rea.data.message)
            }
            // 展示
            form.val('formEdit', res.data.data)
        })
    })


    // 需求5: 修改文章分类,事件委托   完全赋值的添加文章分类,修改内部数据
    $("body").on('submit', "#formEdit", function (e) {
        e.preventDefault()
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(res => {
            // console.log(res.data);


            if (res.data.status != 0) {
                return layer.msg(res.data.message)
            }
            // 成功提示
            layer.msg("恭喜您,修改文章类别成功!")
            // 关闭对话框
            layer.close(indexEdit);
            // 刷新页面
            initArtCateList();

        })
    })

    // 需求6: 删除功能  -- 事件委托  可以参考修改
    $("tbody").on("click", ".btn-delete", function () {
        // 获取id  要写在弹窗之外
        let id = $(this).attr("data-id");
        // 弹窗
        layer.confirm('is not?', { icon: 3, title: '提示' }, function (index) {
            // 发送ajax
            axios({
                method: 'GET',
                url: '/my/article/deletecate/' + id
            }).then(res => {
                if (res.data.status !== 0) {
                    return layer.msg(res.data.message)

                }
                // 成功提示
                layer.msg("恭喜您,删除文章分类成功!")
                // 关闭对话框
                layer.close(indexAdd);
                // 刷新页面
                initArtCateList();

            })
            //    在axios处理函数外边关闭对话框
            layer.close(index)

        })
    })
})

